// #include<string>
// #include<iostream>
// #include<map>
// #include<algorithm>
//
// using namespace std;
//
// class surface
// {
// public:
//     surface(int w, int n)
//         : w(w),
//           n(n)
//     {
//     }
//
// protected:
//     int w;
//     int n;
// };
// class Res
// {
// public:
//     Res()
//     {
//         m["按钮"] = new surface(1,2);
//         m["角色"] = new surface(2,3);
//     }
// protected:
//     map<string,surface*> m;
// };
//
// //map 映射
// void test_map()
// {
//     pair<int,string> data;
//     data.first = 1;
//     data.second = "abv";
//
//     //排序性 按照键的方式做的 键唯一 唯一性
//     map<int,string,greater<int>> m;
//
//     //直接用下标法插入
//     m[1]="xiaowu";
//     m[1]="xiaows";
//     m.insert(pair<int,string>(2,"abc"));
//     //无效操作 不做插入
//     m.insert(pair<int,string>(2,"cde"));
//     for (auto& v:m)
//     {
//         cout << v.first << v.second << endl;
//     }
//
//     auto pos = m.find(1);
//     if (pos!=m.end())
//     {
//         m.erase(pos);
//     };
//     for (map<int,string,greater<int>>::iterator iter = m.begin();iter!=m.end();iter++)
//     {
//             cout << iter->first << iter->second << endl;
//     }
//
// }
//
// void test_multimap()
// {
//     multimap<string,string> answer;
//     //不能直接用下标法操作
//    // answer["A"] = "a";
//
//     answer.insert(pair<string,string>("A","a"));
//     answer.insert(pair<string,string>("A","a"));
//     answer.insert(pair<string,string>("B","b"));
//
//
//     for (auto&v:answer)
//     {
//         cout << v.first << v.second << endl;
//     }
//
//
// }
//
// void test_hash_map()
// {
//     //效率高 用hash 结构  高效率
//     unordered_map<int,string> hash_map;
//     hash_map.insert(pair<int,string>(1,"xiaowu"));
// }
// class MM
// {
// public:
//     MM(const string& name, int age)
//         : name(name),
//           age(age)
//     {
//     }
//
//     friend bool operator==(const MM& lhs, const MM& rhs)
//     {
//         return lhs.name == rhs.name
//             && lhs.age == rhs.age;
//     }
//
//     friend bool operator!=(const MM& lhs, const MM& rhs)
//     {
//         return !(lhs == rhs);
//     }
//
//     void set_name(const string& name)
//     {
//         this->name = name;
//     }
//
//     void set_age(int age)
//     {
//         this->age = age;
//     }
//
//     [[nodiscard]] string name1() const
//     {
//         return name;
//     }
//
//     [[nodiscard]] int age1() const
//     {
//         return age;
//     }
//
// protected:
//     string name;
//     int age;
// };
//
// class GG
// {
// public:
//     GG(string name, int age)
//         : name(name),
//           age(age)
//     {
//     }
//
// protected:
//     string name;
//     int age;
// };
//
// struct compare_by_age
// {
//     bool operator()(const MM& one,const MM& two)const
//     {
//         return one.age1() < two.age1();
//     }
// };
// bool operator==(const pair<const MM,GG>&object,int value)
// {
//     return object.first.age1()==value;
// }
//
// void test_user_data()
// {
//     map<MM,GG,compare_by_age> data;
//     data.insert(pair<MM,GG>(MM("xiaow",1),GG("iaowu",2)));
//      for (auto& v:data)
//      {
//          cout << v.first.age1() << endl;
//      }
//
//     find(data.begin(),data.end(),1);
//
// }
//
//
//
//
// int main()
// {
//     // test_map();
//     // test_multimap();
//     // test_hash_map();
//     test_user_data();
//     return 0;
// }